import java.util.Scanner;

/**
 * 1. 卡片
 * https://www.lanqiao.cn/problems/1443/learning/?page=1&first_category_id=1&second_category_id=3&tag_relation=intersection&tags=2021,%E7%9C%81%E8%B5%9B
 */
public class Main1 {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        //在此输入您的代码...
        int[] arr = new int[10]; // 代表 0-9 个卡牌的个数
        for(int i = 0;i < 10;i++) {
            arr[i] = 2021; // 初始值为 2021
        }
        // 结果
        for(int result = 1;result < 999999;result++) {
            // 结果从1开始进行遍历
            // 用结果进行推出结果，如果某一个结果的值用卡片减出现的次数之后结果为 负数的话，那么就说明这个值不能构造，那就是这个值的前一个值
            // 将这个数据转换成 字符串可以 快速的去对应 位数的值
            String str = String.valueOf(result);
            // 将其转换成字符数组
            char[] strArr = str.toCharArray();

            for(char ch : strArr) {
                // 将这个字符转换成数字，就是对应需要的 卡片数字
                int x = (ch - '0');
                // 将这个数字从对应的数组下标中减去一个
                if(arr[x] != 0) {
                    arr[x]--;
                }else {
                    System.out.println(result - 1);
                    return;
                }
            }
        }
        scan.close();
    }
}
